import java.util.*;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: mac
 * Date: 2022-10-22
 * Time: 18:53
 */
public class Test {
    public static int findNums(int[] array){
        Map<Integer, Integer> map = new HashMap<>();
        //判断array中的元素是否在map当中，如果不在就是1，在就是在原来的基础上+1
        for (int i = 0; i < array.length; i++) {
            /*if (map.containsKey(array[i])){
                map.put(array[i], map.get(array[i]) + 1);*/
            if (map.containsKey(array[i])){
                return array[i];
            }else{
                map.put(array[i], 1);
            }
        }
        return -1;
    }
    public static void main(String[] args) {
        int[] array = new int[1_00];
        Random random = new Random();
        for (int i = 0; i < array.length; i++) {
            array[i] = random.nextInt(10);
        }
        //Map<Integer, Integer> map = findNums(array);
        //Set<Integer> set = map.keySet();
        //System.out.println(set);
        int ret = findNums(array);
        System.out.println(ret);
    }
    public static void main2(String[] args) {
        Set<Integer> set = new HashSet<>();//自动去重
        set.add(1);
        set.add(2);
        set.add(1);
        System.out.println(set);
        //迭代器
        Iterator<Integer> iterator = set.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

        LinkedHashSet linkedHashSet = new LinkedHashSet<>();

    }
    public static void main1(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("abc", 3);
        map.put("bit", 2);//存储元素的时候要注意key如果相同，key值会被覆盖
        map.put("hello", 4);
        //map.put(null, null);
        System.out.println(map);//why??
        //HashMap在存储元素的时候， 不是按照你的存储顺序进行打印的，
        //是根据函数来进行存储的，由函数来确定的，这个函数就是哈希函数
        /*int ret = map.get("bit");//通过key来获取对应的val值
        System.out.println(ret);
        System.out.println(map.getOrDefault("bit2", 98));
        Integer ret2 = map.remove("bit");
        System.out.println(ret2);
        System.out.println(map);*/


        /*Set<String> set  = map.keySet();//Set这个集合中存储的元素都是不重复的
        System.out.println(set);*/

        //放在、TreeMap当中的数据是可以比较的
        Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
        for (Map.Entry<String, Integer> entry: entrySet
             ) {
            System.out.println(entry.getKey() + "->" + entry.getValue());
        }
    }
}
